/*************************************************
 *	文件名称：mydata.c
 *	文件说明：文件为线性表的双向链表的函数实现文件
 *	程序平台：
 *	文件作者：Jason <jasonsunsoft@163.com>
 *	文件时间：2014年8月23日 16:27
*************************************************/

#include "mydata.h"

DuLinkList GetElemp_duL(DuLinkList L, int i)
{
	int j = 1;
	DuLinkList p, q;

	p = L->next;
	q = L;
	while ((j < i) && !(p->next == q))
	{
		p = p->next;
		++j;
	}
	if (j > i || (p->next == q))
		return NULL;
	else
		return p;
}

Status ListInsert_Dul(DuLinkList *L, int i, ElemType e)
{
	DuLinkList p, s;

	if (!(p = GetElemp_duL(*L, i)))
		return ERROR;
	if (!(s = (DuLinkList)malloc(sizeof(DuLNode))))
		return ERROR;
	s->data = e;
	s->prior = p->prior;
	p->prior->next = s;
	s->next = p->next;
	p->prior = s;
	return OK;
}//ListInsert_Dul

Status ListDelete_DuL(DuLinkList *L, int i, ElemType *e)
{
	DuLinkList p;
	if (!(p = GetElemp_duL(*L, i)))
		return ERROR;
	*e = p->data;
	p->prior->next = p->next;
	p->next->prior = p->prior;
	free(p);
	return OK;
}
